package vip.xiaonuo.modular.remoteapi.stairs.response;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.List;

@Data
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DeviceDTO {

    /**
     * 设备信息
     */
    private DeviceInfoDTO device_info;
    /**
     * 服务器信息
     */
    private ServerInfoDTO server_info;
    /**
     * 公共楼层
     */
    private CommonFloorDTO common_floor;
    /**
     * 读卡器信息
     */
    private CardInfoDTO card_info;

    /**
     * DeviceInfoDTO
     */
    @NoArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class DeviceInfoDTO {

        /**
         * 电梯起启楼层，负楼层，加入-，例负  1 楼，-1
         */
        private Integer first_floor;
        /**
         * 继电器动作延时时间，单位秒
         */
        private Integer delay_time;
        /**
         * 音量大小    0-15，数值越大音量越大，0 表示没有声音,
         */
        private Integer volume;
        /**
         * 到期提醒（天数），0 表示不需要提醒
         */
        private Integer remind;
        /**
         * 设备系统时间
         */
        private String date_time;
        /**
         * 硬件版本
         */
        private String firmware;
        /**
         * 二维码工作方式
         */
        private Integer qr_mode;

        private String buildNumber;
    }

    /**
     * ServerInfoDTO
     */
    @NoArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class ServerInfoDTO {

        /**
         * 服务器是否启用,true    or   false
         */
        private Boolean server_enable;
        /**
         * 服务器    IP
         */
        private String server_ip;
        /**
         * 服务器端口号
         */
        private Integer server_port;
    }

    /**
     * CommonFloorDTO
     */
    @NoArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class CommonFloorDTO {

        /**
         * 公共楼层数量,最多  5  个楼层
         */
//        private Integer com_count;

        private Integer comm_count;
        /**
         * 公共楼层
         */
        private List<Integer> floor;
    }

    /**
     * CardInfoDTO
     */
    @NoArgsConstructor
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class CardInfoDTO {

        /**
         * 卡片防复制，true 开启防复制，false  关闭，开启后  IC 卡失效，只能使用    CPU 卡,默认关闭。
         */
        private Boolean prevent_copy;
    }
}
